package util.assembly;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import bo.Producto;
import bo.Stock;
import dto.ProductoDTO;
import dto.StockDTO;

public class ProductoAssembly {
	
	public static Producto toBO(ProductoDTO productoDTO) {
		
		Producto producto = new Producto();
		producto.setId(productoDTO.getId());
		producto.setCodigo(productoDTO.getCodigo());
		producto.setTipo(productoDTO.getTipo());
		producto.setMarca(productoDTO.getMarca());
		producto.setModelo(productoDTO.getModelo());
		producto.setMedida(productoDTO.getMedida());
		producto.setDescripcion(productoDTO.getDescripcion());
		producto.setProveedor(productoDTO.getProveedor());
		producto.setPrecioB2B(productoDTO.getPrecioB2B());
		producto.setPrecioLista(productoDTO.getPrecioLista());
		
		List<Stock> stocks = new ArrayList<Stock>();
		
		List<StockDTO> stocksDTO = productoDTO.getStocks();
		if (stocksDTO != null) {
			for (Iterator iterator = stocksDTO.iterator(); iterator.hasNext();) {
				StockDTO stockDTO = (StockDTO) iterator.next();
				stocks.add(StockAssembly.toBO(stockDTO));
			}
			producto.setStocks(stocks);
		}
		return producto;
	}

	public static ProductoDTO toDTO(Producto producto) {
		
		ProductoDTO productoDTO = new ProductoDTO();
		productoDTO.setId(producto.getId());
		productoDTO.setCodigo(producto.getCodigo());
		productoDTO.setTipo(producto.getTipo());
		productoDTO.setMarca(producto.getMarca());
		productoDTO.setModelo(producto.getModelo());
		productoDTO.setMedida(producto.getMedida());
		productoDTO.setDescripcion(producto.getDescripcion());
		productoDTO.setProveedor(producto.getProveedor());
		productoDTO.setPrecioB2B(producto.getPrecioB2B());
		productoDTO.setPrecioLista(producto.getPrecioLista());
		
		List<StockDTO> stocksDTO = new ArrayList<StockDTO>();

		List<Stock> stocks = producto.getStocks();
		if (stocks != null) {
			for (Iterator iterator = stocks.iterator(); iterator.hasNext();) {
				Stock stock = (Stock) iterator.next();
				stocksDTO.add(StockAssembly.toDTO(stock));
			}
			productoDTO.setStocks(stocksDTO);
		}
		return productoDTO;
	}
}
